Перейти к основному содержимому

5.12. Встроенные функции в Groovy

Разработчику Архитектору

Встроенные функции в Groovy

Функции для работы с коллекциями

ФункцияЗначениеПример
collect()Преобразует каждый элемент коллекции[1, 2, 3].collect { it * 2 }
findAll()Фильтрует элементы по условию[1, 2, 3, 4].findAll { it > 2 }
each()Выполняет действие для каждого элемента[1, 2, 3].each { println it }
inject()Накапливает результат через аккумулятор[1, 2, 3].inject(0) { sum, num -> sum + num }
any()Проверяет, соответствует ли хотя бы один элемент условию[1, 2, 3].any { it > 2 }
every()Проверяет, соответствуют ли все элементы условию[2, 4, 6].every { it % 2 == 0 }
groupBy()Группирует элементы по ключу[1, 2, 3, 4].groupBy { it % 2 }
sort()Сортирует коллекцию[3, 1, 4, 2].sort()
reverse()Разворачивает коллекцию[1, 2, 3].reverse()
unique()Удаляет дубликаты[1, 2, 2, 3].unique()
flatten()Преобразует вложенные коллекции в плоскую[[1, 2], [3, 4]].flatten()
sum()Вычисляет сумму элементов[1, 2, 3].sum()
min()Находит минимальный элемент[3, 1, 4, 2].min()
max()Находит максимальный элемент[3, 1, 4, 2].max()
count()Подсчитывает элементы по условию[1, 2, 3, 4].count { it > 2 }
drop()Удаляет указанное количество элементов с начала[1, 2, 3, 4].drop(2)
take()Берет указанное количество элементов с начала[1, 2, 3, 4].take(2)
chunk()Разбивает коллекцию на части[1, 2, 3, 4, 5].chunk(2)

Функции для работы со строками

ФункцияЗначениеПример
trim()Удаляет пробелы по краям строки" текст ".trim()
toUpperCase()Преобразует строку в верхний регистр"привет".toUpperCase()
toLowerCase()Преобразует строку в нижний регистр"ПРИВЕТ".toLowerCase()
replaceAll()Заменяет все вхождения подстроки"привет мир".replaceAll("мир", "Groovy")
split()Разделяет строку по разделителю"один,два,три".split(",")
tokenize()Разбивает строку на токены"один два три".tokenize()
center()Центрирует строку в заданной ширине"текст".center(20)
padLeft()Добавляет символы слева"5".padLeft(3, "0")
padRight()Добавляет символы справа"5".padRight(3, "0")
reverse()Разворачивает строку"привет".reverse()
capitalize()Делает первую букву заглавной"привет".capitalize()
toInteger()Преобразует строку в целое число"123".toInteger()
toDouble()Преобразует строку в число с плавающей точкой"123.45".toDouble()
toBoolean()Преобразует строку в булево значение"true".toBoolean()
encodeBase64()Кодирует строку в Base64"текст".encodeBase64()
decodeBase64()Декодирует строку из Base64"dGVrdHM=".decodeBase64()
stripMargin()Удаляет отступы из многострочной строки""" текст""".stripMargin()
stripIndent()Удаляет общий отступ из строк""" текст""".stripIndent()

Функции для работы с файлами

ФункцияЗначениеПример
eachLine()Читает файл построчноnew File("file.txt").eachLine { line -> println line }
readLines()Читает все строки файла в списокnew File("file.txt").readLines()
getText()Читает содержимое файла как строкуnew File("file.txt").getText()
getText(String charset)Читает файл с указанием кодировкиnew File("file.txt").getText("UTF-8")
write(String text)Записывает текст в файлnew File("file.txt").write("текст")
append(String text)Добавляет текст в конец файлаnew File("file.txt").append("дополнение")
delete()Удаляет файлnew File("file.txt").delete()
renameTo(File dest)Переименовывает файлnew File("old.txt").renameTo(new File("new.txt"))
mkdir()Создает директориюnew File("dir").mkdir()
mkdirs()Создает директорию со всеми родительскимиnew File("dir/subdir").mkdirs()
listFiles()Возвращает список файлов в директорииnew File("dir").listFiles()
eachFile()Выполняет действие для каждого файлаnew File("dir").eachFile { file -> println file }
eachFileRecurse()Рекурсивно обходит все файлыnew File("dir").eachFileRecurse { file -> println file }
exists()Проверяет существование файлаnew File("file.txt").exists()
isDirectory()Проверяет, является ли файл директориейnew File("dir").isDirectory()
isFile()Проверяет, является ли путь файломnew File("file.txt").isFile()
length()Возвращает размер файла в байтахnew File("file.txt").length()
lastModified()Возвращает время последнего измененияnew File("file.txt").lastModified()

Системные функции

ФункцияЗначениеПример
println()Выводит текст с переносом строкиprintln "Привет"
print()Выводит текст без переноса строкиprint "Привет"
printf()Форматированный выводprintf "Число: %d", 42
sleep(long millis)Приостанавливает выполнениеsleep(1000)
System.currentTimeMillis()Текущее время в миллисекундахSystem.currentTimeMillis()
System.getenv(String name)Получает переменную окруженияSystem.getenv("PATH")
System.getProperty(String name)Получает системное свойствоSystem.getProperty("user.home")
Runtime.getRuntime().exec(String cmd)Выполняет системную командуRuntime.getRuntime().exec("ls")
Thread.start()Запускает новый потокThread.start { println "Поток" }
Thread.join()Ожидает завершения потокаthread.join()
synchronized(Object lock)Синхронизирует блок кодаsynchronized(lock) { /* код */ }

Функции для работы с датами

ФункцияЗначениеПример
new Date()Создает объект текущей датыdef now = new Date()
parse(String pattern, String date)Парсит строку в датуDate.parse("yyyy-MM-dd", "2024-01-15")
format(String pattern)Форматирует дату в строкуnew Date().format("yyyy-MM-dd")
getYear()Возвращает годnew Date().getYear()
getMonth()Возвращает месяцnew Date().getMonth()
getDate()Возвращает день месяцаnew Date().getDate()
getHours()Возвращает часыnew Date().getHours()
getMinutes()Возвращает минутыnew Date().getMinutes()
getSeconds()Возвращает секундыnew Date().getSeconds()
plus(int days)Добавляет дни к датеnew Date() + 7
minus(int days)Вычитает дни из датыnew Date() - 7
compareTo(Date other)Сравнивает две датыdate1.compareTo(date2)
before(Date other)Проверяет, раньше ли датаdate1.before(date2)
after(Date other)Проверяет, позже ли датаdate1.after(date2)
clearTime()Обнуляет время в датеnew Date().clearTime()
copyWith(Map changes)Создает копию с изменениямиdate.copyWith(year: 2025)

Функции для работы с числами

ФункцияЗначениеПример
abs()Абсолютное значение(-5).abs()
round()Округление до ближайшего целого3.7.round()
ceil()Округление вверх3.2.ceil()
floor()Округление вниз3.8.floor()
intValue()Преобразует в целое число3.14.intValue()
longValue()Преобразует в длинное целое3.14.longValue()
floatValue()Преобразует в число с плавающей точкой3.intValue().floatValue()
doubleValue()Преобразует в двойную точность3.intValue().doubleValue()
toInteger()Преобразует в Integer"42".toInteger()
toLong()Преобразует в Long"42".toLong()
toFloat()Преобразует в Float"3.14".toFloat()
toDouble()Преобразует в Double"3.14".toDouble()
times(Closure closure)Выполняет замыкание указанное количество раз3.times { println "Привет" }
upto(Number to, Closure closure)Выполняет от текущего числа до указанного1.upto(5) { println it }
downto(Number to, Closure closure)Выполняет от текущего числа вниз до указанного5.downto(1) { println it }
step(Number to, Number step, Closure closure)Выполняет с шагом1.step(10, 2) { println it }

Функции для отладки

ФункцияЗначениеПример
dump()Выводит внутреннюю структуру объектаobj.dump()
inspect()Возвращает строковое представление объектаobj.inspect()
toString()Строковое представление объектаobj.toString()
getClass()Возвращает класс объектаobj.getClass()
instanceOf(Class clazz)Проверяет принадлежность к классуobj.instanceOf(String)
asType(Class clazz)Преобразует объект к указанному типуobj.asType(String)
with(Object receiver)Выполняет код в контексте объектаobj.with { println name }
tap(Closure closure)Выполняет замыкание и возвращает объектobj.tap { it.name = "test" }
withTraits(List traits)Применяет трейты к объектуobj.withTraits([Trait1, Trait2])

Функции для работы с картами (Map)

ФункцияЗначениеПример
get(Object key)Получает значение по ключуmap.get("key")
put(Object key, Object value)Добавляет пару ключ-значениеmap.put("key", "value")
remove(Object key)Удаляет элемент по ключуmap.remove("key")
containsKey(Object key)Проверяет наличие ключаmap.containsKey("key")
containsValue(Object value)Проверяет наличие значенияmap.containsValue("value")
keySet()Возвращает множество ключейmap.keySet()
values()Возвращает коллекцию значенийmap.values()
entrySet()Возвращает множество записейmap.entrySet()
each(Closure closure)Выполняет для каждой пары ключ-значениеmap.each { k, v -> println "$k=$v" }
collect(Closure closure)Преобразует каждую записьmap.collect { k, v -> "$k=$v" }
findAll(Closure closure)Фильтрует записи по условиюmap.findAll { k, v -> v > 10 }
any(Closure closure)Проверяет условие для хотя бы одной записиmap.any { k, v -> v > 10 }
every(Closure closure)Проверяет условие для всех записейmap.every { k, v -> v > 0 }
groupBy(Closure closure)Группирует записи по ключуmap.groupBy { k, v -> v % 2 }
sort(Closure closure)Сортирует записиmap.sort { a, b -> a.value <=> b.value }
subMap(Collection keys)Создает подкарту с указанными ключамиmap.subMap(["key1", "key2"])
plus(Map other)Объединяет две картыmap1 + map2
minus(Object key)Удаляет ключ из картыmap - "key"